using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WellDone
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
        }

        public void init()
        {
            lblUsername.Content = Globals.currentLogin.col_DisplayName;
            ContentFrame.Navigate(new Uri("/Account", UriKind.Relative));
            // Set visibility of links depending on manager status
            hbFloorLayout.Visibility = (Globals.currentLogin.col_Manager ? Visibility.Visible : Visibility.Collapsed);
            hbEmployees.Visibility = (Globals.currentLogin.col_Manager ? Visibility.Visible : Visibility.Collapsed);
            hbMenuItems.Visibility = hbEmployees.Visibility;
            hbReports.Visibility = hbEmployees.Visibility;
            hbConfiguration.Visibility = hbEmployees.Visibility;
        }

        // After the Frame navigates, ensure the HyperlinkButton representing the current page is selected
        private void ContentFrame_Navigated(object sender, NavigationEventArgs e)
        {
            foreach (UIElement child in LinksStackPanel.Children)
            {
                HyperlinkButton hb = child as HyperlinkButton;
                if (hb != null && hb.NavigateUri != null)
                {
                    if (ContentFrame.UriMapper.MapUri(e.Uri).ToString().Equals(ContentFrame.UriMapper.MapUri(hb.NavigateUri).ToString()))
                    {
                        VisualStateManager.GoToState(hb, "ActiveLink", true);
                    }
                    else
                    {
                        VisualStateManager.GoToState(hb, "InactiveLink", true);
                    }
                }
            }
        }

        // If an error occurs during navigation, show an error window
        private void ContentFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
        {
            e.Handled = true;
            ChildWindow errorWin = new ErrorWindow(e.Uri);
            errorWin.Show();
        }

        private void hbLogout_Click(object sender, RoutedEventArgs e)
        {
            // Confirm logout
            if (MessageBox.Show("Are you sure you want to logout?", "Confirm", MessageBoxButton.OKCancel) == MessageBoxResult.OK)
            {
                // Go back to the login screen
                Globals.root.Content = Globals.login;
                // Reset the front page...
                ContentFrame.Navigate(new Uri("/Account", UriKind.Relative));
            }
        }

        private void hbReports_Click(object sender, RoutedEventArgs e)
        {
            // Determine the reports URL
            //if (Globals.db.ConfigurationRecords.Where(x => x.col_KeyName == Globals.k_str_reports_url_key).Count() > 0)
            //{
            //    ServiceReferenceOpenRPOS.Configuration configRecord = Globals.db.ConfigurationRecords.Where(x => x.col_KeyName == Globals.k_str_reports_url_key).First();
            //    //System.Windows.Browser.HtmlPage.Window.Navigate(new Uri("http://openrpos.cloudapp.net/ReportServer?%2fWhaley's"), "_blank");
            //    System.Windows.Browser.HtmlPage.Window.Navigate(new Uri(configRecord.col_Value), "_blank");
            //}
            System.Windows.Browser.HtmlPage.Window.Navigate(new Uri("ReportViewerForm.aspx?Token=" + Globals.token, UriKind.Relative), "_blank");
        }

    }
}